Python如何实现抖音评论数据抓取

您所在的位置:网站首页 抖音 数据抓取 Python如何实现抖音评论数据抓取

Python如何实现抖音评论数据抓取

2023-03-30 11:38| 来源: 网络整理| 查看: 265

Python如何实现抖音评论数据抓取 发布时间:2022-01-21 09:14:13 来源:亿速云 阅读:2909 作者:小新 栏目:开发技术

小编给大家分享一下Python如何实现抖音评论数据抓取,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

1. 抓取数据

抖音出了 web 版,抓取数据方便了很多。

Python如何实现抖音评论数据抓取

抓评论

滑到网页评论区,在浏览器网络请求里过滤包含comment的请求,不断刷新评论就可以看到评论的接口。

有了接口,就可以写 Python 程序模拟请求,获取评论数据。

请求数据要设置一定间隔,避免过大请求,影响别人服务

抓取评论数据有两点需要注意:

有时候接口可能返回空数据,因此需要多试几次,一般过了人工滑动验证后的接口基本可用

不同页面之间的数据可能会重复,所以需要跳页请求

2. EDA

11.17 号的视频有 12w 条评论,我只抓取了 1w 多条。

Python如何实现抖音评论数据抓取

text列是评论。

先对数据做一些探索性的分析,之前介绍过几个EDA工具,可以自动产出基础的数据统计和图表。

这次我用的是ProfileReport

# eda profile = ProfileReport(df, title='张同学抖音评论数据', explorative=True) profile

Python如何实现抖音评论数据抓取

评论时间分布

从评论的时间分布来看,由于发布的视频的时间是17号,所有17、18号评论发布量比较多。不过再往后甚至到了 12.9 号,仍然有不少新评论产生,说明视频热度确实很高。

Python如何实现抖音评论数据抓取

评论的长度分布

大多数评论的字数在 20 以内,基本不超过 40 个字,说明都是短文本。

Python如何实现抖音评论数据抓取

评论者身份

参与评论的人里, 99.8% 是没有认证身份的,说明评论用户里基本都是普通用户。

3. LDA

上面的统计数据还是太粗略了。但我们要想知道大家的感兴趣点在哪,又不可能细到把 1.2w 条评论全部看完。

所以需要对这些评论先做一次归类,相当于把数据升维,抽象。因为只有将数据升维,了解每个维度的含义和占比,才能帮助我们从全局角度掌握数据。

这里我用LDA算法对文本聚类,聚合在一起的评论可以看做属于同一个主题。

LDA算法的核心思想有两点:

具有一定相似性的文本会聚合在一起,形成一个主题。每个主题包含生成该主题需要的词,以及这些词的概率分布。以此可以人为推断出主题的类别。

每篇文章会它有在所有主题下的概率分布,以此可以推断出文章属于哪个主题。

比如,经过LDA算法聚类后,某个主题中,战争、军费这类词出现概率很高,那么我们可以将该主题归类为军事。如果有一篇文章属于军事主题的概率很高,我们就可以将该文章分为军事一类。

简单介绍完LDA的理论,下面我们来实战一下。

3.1 分词、去停用词# 分词 emoji = {'可怜', '发呆', '晕', '灵机一动', '击掌', '送心', '泣不成声', '哈欠', '舔屏', '偷笑', '愉快', '再见', '666', '熊吉', '尬笑', '吐舌', '撇嘴', '看', '绿帽子', '捂脸', '呆无辜', '强壮', '震惊', '阴险', '绝', '给力', '打脸', '咖啡', '衰', '一起加油', '酷拽', '流泪', '黑脸', '爱心', '笑哭', '机智', '困', '微笑袋鼠', '强', '闭嘴', '来看我', '色', '憨笑', '不失礼貌的微笑', '红脸', '抠鼻', '调皮', '紫薇别走', '赞', '比心', '悠闲', '玫瑰', '抱拳', '小鼓掌', '握手', '奸笑', '害羞', '快哭了', '嘘', '惊讶', '猪头', '吐', '暗中观察', '不看', '啤酒', '呲牙', '发怒', '绝望的凝视', '大笑', '吐血', '坏笑', '凝视', '可爱', '拥抱', '擦汗', '鼓掌', '胜利', '感谢', '思考', '微笑', '疑问', '我想静静', '灵光一闪', '白眼', '泪奔', '耶'} stopwords = [line.strip() for line in open('stop_words.txt', encoding='UTF-8').readlines()] def fen_ci(x):     res = []     for x in jieba.cut(x):         if x in stopwords or x in emoji or x in ['[', ']']:             continue         res.append(x)     return ' '.join(res) df['text_wd'] = df['text'].apply(fen_ci)

由于评论中有许多 emoji 表情, 我抽取了所以 emoji 表情对应的文本,生成 emoji 数组,用于过滤表情词。

3.2 调用LDAfrom sklearn.feature_extraction.text import CountVectorizer from sklearn.decomposition import LatentDirichletAllocation import numpy as np def run_lda(corpus, k):     cntvec = CountVectorizer(min_df=2, token_pattern='\w+')     cnttf = cntvec.fit_transform(corpus)          lda = LatentDirichletAllocation(n_components=k)     docres = lda.fit_transform(cnttf)          return cntvec, cnttf, docres, lda      cntvec, cnttf, docres, lda = run_lda(df['text_wd'].values, 8)

经过多次试验,将数据分成 8 类效果较好。

选取每个主题下出现概率 top20 的词:

Python如何实现抖音评论数据抓取

主题的词分布

从这些词概率分布,归纳各主题的类别,主题0 ~ 主题7分别是:居然看完、知道钥匙在哪、农村生活、喂狗、拍摄手法、还用锁门?、鸡蛋放盐多、袜子放枕头下。

统计主题占比:

Python如何实现抖音评论数据抓取

主题占比

红色的是主题3(喂狗),占比最大,很多人评论是:以为要做给自己吃,没想到是喂狗的。我看的时候也是这样认为的。

其他各主题占比比较均匀。

经过主题分类后,我们可以发现,张同学不仅仅是农村生活引起了大家的关注,更多的是视频中大量反常态的镜头。

最后,用树状图展示各主题及对应的具体评论。

Python如何实现抖音评论数据抓取

看完了这篇文章,相信你对“Python如何实现抖音评论数据抓取”有了一定的了解,如果想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

推荐阅读: 「docker实战篇」python的docker-抖音web端数据抓取(19) vue实现抖音时间转盘

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:[email protected]进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

python 上一篇新闻:如何使用Java实现图片切割功能 下一篇新闻:plsql可不可以连接mysql 猜你喜欢 C语言基本数据类型是什么 k8s部署ingress-nginx的方法是什么 如何使用JS操作文件 linux中的软连接和硬连接怎么理解 Android优化提升应用启动速度及Splash页面的设计方法 nginx.pid打开失败怎么办 selenium UI自动化怎么实现 Linux系统运行级别是怎样的 ASP.NET Core使用固定窗口限流的方法是什么 怎么用Java设计一个短链接生成系统


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3